package org.xx.armory.swing;

import org.xx.armory.swing.components.InternalFramePane;
import org.xx.armory.swing.components.StatusBar;

import javax.swing.*;
import java.util.function.Supplier;

public interface MDIFrameUIController
        extends FrameUIController {
    void addChild(
            JInternalFrame frame
    );

    /**
     * 打开指定名字的内部窗体。
     * <p>如果指定名字的内部窗体存在则推送到最前方，否则调用{@code childSupplier}生成新的窗体，并推送到最前方。如果此函数返回{@code null}则不执行任何操作。</p>
     *
     * @param name
     *         内部窗体的名字，自动去掉首尾空格。
     * @param childSupplier
     *         用于生成内部窗体的函数。
     * @throws IllegalArgumentException
     *         如果参数{@code name}是{@code null}或者只包含空白字符，或者参数{@code childSupplier}是{@code null}。
     */
    void openChild(
            String name,
            Supplier<InternalFramePane> childSupplier
    );

    InternalFramePane getSelectedChild();

    /**
     * 获取状态栏。
     *
     * @return 状态栏。
     */
    StatusBar getStatusBar();
}
